/**
 * Enumerated type of goods. Call on Goods.WATER for instance to get "water".
 * Goods.WATER.name should return name or if you're iterating through the get
 * methods also work.
 * 
 * @author Michelle Partogi, Araya Zaesim, Stanley Ayzenberg, Adam Perez
 * @version 1.0
 */

public enum Goods {
	/**
	 * Field WATER.
	 */
	WATER("Water", new int[]{0, 0, 2, 30, 3, 4, 30, 50}, 
			"Drought", "Lots of Water", "Desert"), /**
  * Field FURS.
  */
 FURS("Furs", new int[]{0, 0, 0, 250, 10, 10, 230, 280}, "Cold", "Rich Fauna",
			"Lifeless"), /**
  * Field FOOD.
  */
 FOOD("Food", new int[]{1, 0, 1, 100, 5, 5, 90, 160}, "Cropfail",
			"Rich Soil", "Poor Soil"), /**
  * Field ORE.
  */
 ORE("Ore", new int[]{2, 2, 3, 350, 20,
			10, 350, 420}, "War", "Mineral Rich", "Mineral Poor"), /**
  * Field GAMES.
  */
 GAMES(
			"Games", new int[]{3, 1, 6, 250, -10, 5, 160,
					270}, "Boredom", "Artistic", "Never"), /**
  * Field FIREARMS.
  */
 FIREARMS("Firearms", new int[]{3, 1, 5, 1250, -75, 100, 600, 1100}, "WAR",
			"Warlike", "Never"), /**
  * Field MEDICINE.
  */
 MEDICINE("Medicine", new int[]{4, 1, 6, 650,
			-20, 10, 400, 700}, "Plague", "Lo", "Never"), /**
  * Field MACHINES.
  */
 MACHINES("Machine", new int[]{4,
			3, 5, 900, -30, 5, 600, 800}, "Lack of Workers", "Never", "Never"), /**
  * Field NARCOTICS.
  */
 NARCOTICS(
			"Narcotics", new int[]{5, 0, 5, 3500, -125, 150, 2000, 3000}, "Boredom",
			"Weird Mushrooms", "Never"), /**
  * Field ROBOTS.
  */
 ROBOTS("Robots", new int[]{6, 4, 7,
			5000, -150, 100, 3500, 5000}, "Lack of Workers", "Never", "Never");

	/*
	 * Acronyms taken from wiki MTLP = Minimum Tech Level to Produce this
	 * resource (You can't buy on planets below this level) MTLU = Minimum Tech
	 * Level to Use this resource (You can't sell on planets below this level)
	 * TTP = Tech Level which produces the most of this item IPL = Price
	 * increase per tech level VAR = variance is the maximum percentage that the
	 * price can vary above or below the base
	 * 
	 * IE = Radical price increase event, when this even happens on a planet,
	 * the price may increase astronomically CR = When this condition is
	 * present, the price of this resource is unusually low ER = When this
	 * condition is present, the resource is expensive
	 * 
	 * MTL = Min price offered in space trade with random trader (not on a
	 * planet) MTH = Max price offered in space trade with random trader (not on
	 * a planet)
	 */

	/**
	 * Field NAME.
	 */
	public final String name;

	/**
	 * Field MTLP.
	 */
	public final int mtlp;

	/**
	 * Field MTLU.
	 */
	public final int mtlu;

	/**
	 * Field TTP.
	 */
	public final int ttp;

	/**
	 * Field BASEPRICE.
	 */
	public final int baseprice;

	/**
	 * Field IPL.
	 */
	public final int ipl;

	/**
	 * Field VAR.
	 */
	public final int var;

	/**
	 * Field IE.
	 */
	public final String ie;

	/**
	 * Field CR.
	 */
	public final String cr;

	/**
	 * Field ER.
	 */
	public final String er;

	/**
	 * Field MTL.
	 */
	public final int mtl;

	/**
	 * Field MTH.
	 */
	public final int mth;

	/*
	 * Goods constructor feed into Public final variables so you can call on
	 * them without changing them
	 */
	/**
	 * Constructor for Goods.
	 * @param name String
	 * @param stats int[]
	 * @param ie String
	 * @param cr String
	 * @param er String
	 */
	private Goods(String name, int[] stats,
			String ie, String cr, String er) {
		this.name = name;
		this.mtlp = stats[0];
		this.mtlu = stats[1];
		this.ttp = stats[2];
		this.baseprice = stats[3];
		this.ipl = stats[4];
		this.var = stats[5];
		this.ie = ie;
		this.cr = cr;
		this.er = er;
		this.mtl = stats[6];
		this.mth = stats[7];
	}

	/**
	 * Method getNAME.
	 * @return String
	 */
	public String getNAME() {
		return name;
	}

	/**
	 * Method getMTLP.
	 * @return int
	 */
	public int getMTLP() {
		return mtlp;
	}

	/**
	 * Method getMTLU.
	 * @return int
	 */
	public int getMTLU() {
		return mtlu;
	}

	/**
	 * Method getTTP.
	 * @return int
	 */
	public int getTTP() {
		return ttp;
	}

	/**
	 * Method getBASEPRICE.
	 * @return int
	 */
	public int getBASEPRICE() {
		return baseprice;
	}

	/**
	 * Method getIPL.
	 * @return int
	 */
	public int getIPL() {
		return ipl;
	}

	/**
	 * Method getVAR.
	 * @return int
	 */
	public int getVAR() {
		return var;
	}

	/**
	 * Method getIE.
	 * @return String
	 */
	public String getIE() {
		return ie;
	}

	/**
	 * Method getCR.
	 * @return String
	 */
	public String getCR() {
		return cr;
	}

	/**
	 * Method getER.
	 * @return String
	 */
	public String getER() {
		return er;
	}

	/**
	 * Method getMTL.
	 * @return int
	 */
	public int getMTL() {
		return mtl;
	}

	/**
	 * Method getMTH.
	 * @return int
	 */
	public int getMTH() {
		return mth;
	}

}
